Vytvorenie (pretypovanie) triedy alebo typu v Runtime
Otázka od: Richard Siegl
11. 10. 2002 11:08
Nazdar lidi
Potreboval by som takuto "zvrhlost", mam nadefinovanu triedu napr XXX
type XXX = class(TObject)
kod: integer;
meno: string;
end;
a typ napr YYY
type YYY = record
kod:integer;
meno:string[255];
end;
a potreboval by som za behu aplikacie predefinovat (zmenit) tuto triedu a
typ.
Konkretne pridat dalsiu vlastnost napr "majitel: string" je to vobec mozne a
ak ano ako ?
Rickie
----------------------
Richard Siegl
ELAS spol. s r.o.
Vinohradnícka 6
97101 Prievidza
tel.: +421 46 5151239
Email: rsiegl@elas.sk
Web: www.elas.sk
----------------------
Odpovedá: Alexandr Stefek
11. 10. 2002 11:43
> Nazdar lidi
>
> Potreboval by som takuto "zvrhlost", mam nadefinovanu triedu napr XXX
>
> type XXX = class(TObject)
> kod: integer;
> meno: string;
> end;
>
> a typ napr YYY
>
> type YYY = record
> kod:integer;
> meno:string[255];
> end;
>
> a potreboval by som za behu aplikacie predefinovat (zmenit) tuto triedu a
> typ.
> Konkretne pridat dalsiu vlastnost napr "majitel: string" je to vobec mozne
a
> ak ano ako ?
>
Mozne je leccos, lze zmenit typ tridy za behu. Silne nedoporucuji. Trida na
record
nelze (alespon podle mne). Lze dokonce vytvorit typ trida za behu, take
silne
nedoporucuji. Pokud je skutecne nutne neco takoveho, jak je zde naznaceno,
potom je mozne vyuzit napr. dynamicke pole s pojmenovanymi polozkami a
pristupovat k jednotlivym polozkam prave podle jejich jmena.
Alexandr STEFEK
Odpovedá: Richard Siegl
11. 10. 2002 12:22
Asi sme sa nepochopili ... nechcem zmenit triedu na typ ale pridat do nich
za behu dalsiu vlastnost.
Rickie
----- Original Message -----
From: "Alexandr Stefek" <alex@scova.vabo.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, October 11, 2002 11:34 AM
Subject: Re: Vytvorenie (pretypovanie) triedy alebo typu v Runtime
> Mozne je leccos, lze zmenit typ tridy za behu. Silne nedoporucuji. Trida
na
> record
> nelze (alespon podle mne). Lze dokonce vytvorit typ trida za behu, take
> silne
> nedoporucuji. Pokud je skutecne nutne neco takoveho, jak je zde naznaceno,
> potom je mozne vyuzit napr. dynamicke pole s pojmenovanymi polozkami a
> pristupovat k jednotlivym polozkam prave podle jejich jmena.
>
> Alexandr STEFEK
Odpovedá: Lubomir Fule
11. 10. 2002 14:12
>
> Asi sme sa nepochopili ... nechcem zmenit triedu na typ ale
> pridat do nich
> za behu dalsiu vlastnost.
>
Delphi ani C++ to urcite neumoznuje... Nemozes predsa za behu zmenit
definiciu triedy, to asi neumoznuje ziadny objektovy jazyk.
Odpovedá: Jan Sebelík
12. 10. 2002 5:02
> Odesílatel: Richard Siegl <rsiegl@elas.sk>
> Potreboval by som takuto "zvrhlost", mam nadefinovanu triedu napr XXX
> a potreboval by som za behu aplikacie predefinovat (zmenit) tuto triedu a
> typ.
> Konkretne pridat dalsiu vlastnost napr "majitel: string" je to vobec mozne a
> ak ano ako ?
To je opravdu zvrhlost.
Ještě by to třeba mohlo podporovat dědičnost .
Ne, vážně, to samozřejmě nejde.
Proměnné vlastnosti bych ale mohl zavádět stylem
TVarTrida = class (TStringList)
...
V.Values['Majitel']:='nejakejmeno';
To jenom jako princip, asi ne doslova.
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================
Odpovedá: Vladimir Michl
12. 11. 2002 17:15
On Fri, 11 Oct 2002, Lubomir Fule wrote:
> >
> > Asi sme sa nepochopili ... nechcem zmenit triedu na typ ale
> > pridat do nich
> > za behu dalsiu vlastnost.
> >
>
> Delphi ani C++ to urcite neumoznuje... Nemozes predsa za behu zmenit
> definiciu triedy, to asi neumoznuje ziadny objektovy jazyk.
^^^^^^^^^^^^^^^^^^^^^^^
Myslim ze takto se zatim chovaji kompilovane jazyky. U interpretru bych v
tom az takovy problem nevidel za behu menit definici (samozrejme v
jistych mezich, jako napriklad pridat promenou).
---------------------------------------------------------------------------
Vladimír Michl <Vladimir.Michl@hlubocky.del.cz>
Del a.s., Strojírenská 38, Žďár nad Sázavou
pobočka Olomoucká 355, Hlubočky-Mariánské Údolí
tel: +420 585 353 548, fax: +420 585 352 364
http://hlubocky.del.cz
Odpovedá: Petr Langer
12. 11. 2002 18:13
Vladimír Michl wrote:
>> definiciu triedy, to asi neumoznuje ziadny objektovy jazyk.
^^^^^^^^^^^^^^^^^^^^^^^
> Myslim ze takto se zatim chovaji kompilovane jazyky. U interpretru bych v
> tom az takovy problem nevidel za behu menit definici (samozrejme v
> jistych mezich, jako napriklad pridat promenou).
Mas pravdu, napr. JavaScript, pouzivany zejmena v browserech, umoznuje bez
problemu pridat ci upravit promennou ci metodu.
Neni to sice plne objektovy jazyk, ale zakladni OOP umoznuje a je
interpretovany.
Petr Langer